home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 140 / Gekkan Dennou Club - 2000.1 Vol. 140 (Japan).7z / Gekkan Dennou Club - 2000.1 Vol. 140 (Japan) (Track 1).bin / tools / xpicw / xpicw110.lzh / WLSource / fade.s < prev    next >
Encoding:
Text File  |  1997-04-10  |  2.0 KB  |  128 lines

  1. *    fade.s
  2. *        フェードイン/アウト(コントラスト操作) / 最高速 = 3
  3. *            by Mitsuky
  4.  
  5.     .include    IOCSCALL.MAC
  6.  
  7. SPEED_MAX    equ    3
  8.  
  9.     .offset    8        * 引き数
  10. _source_ptr:    .ds.l    1
  11. _dest_ptr:    .ds.l    1
  12. _speed:        .ds.l    1
  13. _vdisp:        .ds.l    1
  14.  
  15.  
  16. WAIT        equ    180    * ファードアウト後待つ時間(単位 1/60 秒)
  17.  
  18. CONTRAST    equ    $ed_0028
  19.  
  20.  
  21.  
  22.     .text
  23.     .even
  24.  
  25.     .dc.b    'WL10',$0d,$0a
  26.     .dc.b    'フェードイン/アウト(コントラスト操作) / 最高速 = 3',$0d,$0a
  27.     .dc.b    '    by Mitsuky',$0d,$0a
  28.     .dc.b    $1a
  29.     .even
  30. fade:
  31.     link    a6,#0
  32.     movem.l    d1-d7/a0-a5,-(sp)
  33.  
  34.     move.l    _speed(a6),d0
  35.     bmi    main_ask_speed
  36.     cmpi.l    #SPEED_MAX,d0
  37.     bhi    main_err
  38.  
  39.     tst.l    _vdisp(a6)
  40.     bmi    main_ask_vdisp
  41.  
  42.  
  43.     moveq.l    #SPEED_MAX,d7
  44.     sub.l    d0,d7
  45.     lsl.l    #2,d7            * d7.l = ループ回数-1
  46.  
  47.  
  48.     moveq.l    #-1,d1            * 現在のコントラスト問い合わせ
  49.     IOCS    _CONTRAST
  50.     move.b    d0,d1
  51.     subq.b    #1,d1            * d1.b = 設定するコントラスト
  52.  
  53. main_out_loop:
  54.     IOCS    _CONTRAST
  55.     move.w    d7,d0
  56. @@:    bsr    vdisp
  57.     dbra    d0,@b
  58.     subq.b    #1,d1
  59.     bne    main_out_loop
  60.  
  61.     IOCS    _CONTRAST
  62.  
  63.     move.w    #WAIT-1,d0
  64. @@:    bsr    vdisp            * 完全にコントラストが安定するまで待つ
  65.     dbra    d0,@b
  66.  
  67.  
  68.     movea.l    _source_ptr(a6),a0    * a0.l = 転送元アドレス
  69.     movea.l    _dest_ptr(a6),a1    * a1.l = 転送先アドレス
  70.  
  71.     move.w    #512-1,d0
  72. @@:    .rept    512/2
  73.     move.l    (a0)+,(a1)+        * 1ライン転送(手抜き)
  74.     .endm
  75.     dbra    d0,@b
  76.  
  77.  
  78.     move.b    CONTRAST,d2        * システムのコントラスト値
  79.     moveq.l    #1,d1
  80. main_in:
  81.     IOCS    _CONTRAST
  82.     move.w    d7,d0
  83. @@:    bsr    vdisp
  84.     dbra    d0,@b
  85.     addq.b    #1,d1
  86.     cmp.b    d1,d2
  87.     bcc    main_in
  88.  
  89.  
  90.     moveq.l    #0,d0
  91. main_rts:
  92.     movem.l    (sp)+,d1-d7/a0-a5
  93.     unlk    a6
  94.     rts
  95.  
  96.  
  97. ****    ****
  98. main_err:
  99.     moveq.l    #-1,d0
  100.     bra    main_rts
  101.  
  102.  
  103. ****    ****
  104. main_ask_speed:
  105.     moveq.l    #SPEED_MAX,d0
  106.     bra    main_rts
  107.  
  108.  
  109. ****    ****
  110. main_ask_vdisp:
  111.     move.l    _speed(a6),d0
  112.     lea.l    ask_vdisp_table(pc),a0
  113.     add.w    d0,d0
  114.     move.w    (a0,d0.w),d0
  115.     bra    main_rts
  116.  
  117. ask_vdisp_table:
  118.     .dc.w    557,441,325,209
  119.  
  120.  
  121. *********************************************************
  122. vdisp:
  123.     movem.l    a0,-(sp)
  124.     move.l    _vdisp(a6),a0
  125.     jsr    (a0)
  126.     movem.l    (sp)+,a0
  127.     rts
  128.